Botnet proskenoval celý internet: používá se jen třetina IPv4 adres

28. 3. 2013
Doba čtení: 8 minut

Sdílet

Je možné projít celý adresní prostor internetu a proskenovat všechny čtyři miliardy adres? Možné to je a dokonce to při správně zvolené technice trvá méně než den. Nedávno se to podařilo a byl přitom využit botnet sestavený z nezabezpečených routerů a dalších zařízení. Jak celá akce probíhala a co přinesla?

Skenování internetu probíhá dnes a denně, kdo provozuje server se SMTP, HTTP či SSH, vidí denně v logu mnoho pokusů o připojení a zkoumání různých chyb, které by bylo možné zneužít. Ovšem proskenovat celý rozsah /0 a podívat se, co vlastně na internetu běží, to je jiná.

Jeden uživatel internetu se o to pokusil a použil přitom zajímavou techniku: využil tisíce otevřených routerů a jiných chytrých krabiček a sestavil si z nich dočasný botnet. Příprava mu trvala půl roku, ale samotné skenování pak probíhalo méně než dvacet čtyři hodin. Nakonec dal všechny získané údaje k dispozici veřejnosti.

Vznikla z toho objemná zpráva Internet Census 2012.

Morální rozměr

Než půjdeme dále a podíváme se na průběh a výsledky experimentu, nedá mi to nezastavit se u morálního aspektu celé věci. Ten je přinejmenším velmi pochybný, nejméně ze dvou důvodů.

Zaprvé byly přímo zneužity slabiny v zabezpečení různých zařízení vlastněnými různými subjekty. Ty pak byly zneužity k operaci, ke kterým nedali majitelé souhlas. Český trestní zákoník z roku 2009 tomu říká „neoprávněný přístup k počítačovému systému“ a hrozí za to odnětí svobody až na dvě léta. Je jasné, že autor neměl v úmyslu nikoho poškodit a pravděpodobně ani žádná materiální škoda nevznikla. I tak to ale rozhodně není v pořádku.

Přestože ve své zprávě několikrát autor skenu píše, že nechtěl být zlý, nechtěl působit škody, nic neměnil a podobně, přesto škodu způsobil tím, že výsledky zveřejnil. Pro nás jsou velmi zajímavé z technického hlediska, proto o nich na Rootu píšeme. Zároveň ale mohou být velmi lehce zneužity někým dalším, jehož úmysly budou jiné.

Botnet z otevřených routerů

Celý příběh začal před dvěma lety, kdy se autor (říkejme mu třeba Joe) zabýval skriptovacím jazykem NSE, který je součástí skenovacího programu Nmap. Někdo se mu zmínil, že by měl zkusit přihlašování telnetem na účet root s heslem root. Bylo to míněno jako vtip, ale zkusil jsem to. Rychle jsem zjistil, že existují tisíce takových zařízení napříč internetem, píše ve zprávě Joe.

Nakonec ze statistického vzorku zjistil, že takto otevřených zařízení musí být nejméně sto tisíc. Když tedy nechá skenovat internet rychlostí deseti adres za sekundu, do hodiny bude mít další zařízení. Pokud jej přidá do svého botnetu, zdvojnásobí tak jeho výkon. Postupně tak může přidávat další a další zařízení a proskenovat internet za 16 hodin.

Rozhodl se, že si svůj nápad vyzkouší. Napsal proto v C malou aplikaci, kterou pak automaticky nahrával na nově objevené routery. Její velikost byla mezi 46 a 60 KB, v závislosti na architektuře. Celkem bylo podporováno devět různých architektur a k sestavení binárky byl použit OpenWRT Buildroot.

Aplikace se snažila co nejméně zatěžovat zařízení, běžela na nejnižší prioritě a měla dva úkoly: hledat další zařízení s telnetem a zkoušet na nich přihlašování kombinací root:root, admin:admin a podobně; a samozřejmě prováděla samotné skenování daného IP rozsahu, jehož výsledky pak posílala na sběrné uzly a následně na server.

Výsledek byl ohromující: existují stovky tisíc takto otevřených zařízení, která mohou dohromady vytvořit super rychlý distribuovaný port skener. Tím je pak možné projít celý internet.

Nakonec byla využita jen asi čtvrtina vybraných zařízení. I tak jich ale bylo 420 000. Šlo především o routery a set-top-boxy koncových zákazníků různých služeb. Schválně byla vynechána specializovaná zařízení, kritická zařízení jako BGP routery, IPSec routery a jiné prvky. Byly mezi nimi i velké nezabezpečené stroje značek Cisco a Juniper. Cílem bylo neohrozit kritickou infrastrukturu a žádná technologická zařízení například v továrnách.

Rozmístění uzlů celého botnetu

Dvouúrovňový sběr dat

Klasický botnet potřebuje centrální server, ke kterému jsou jednotlivé nody připojené a získávají od něj své příkazy a naopak mu odevzdávají získaná data. V tomto případě byla ale situace jiná, protože všechna použitá zařízení mají veřejnou IP adresu. Server tedy může naopak zůstat skryt a připojovat se k nim zvenčí.

Přesto tu byl problém: pokud byl takto napadený router restartován, botnet klient se z paměti vymazal a zařízení navíc mohlo změnit IP adresu. Proto celý botnet stále skenoval port 23 v různých rozsazích a hledal „ztracené bratry“. Praxe ale ukázala, že 85 % zařízení se nerestartuje a nemění IP adresu a jsou tedy dostupná neustále.

Dále byla pro sběr dat využita dvoustupňová architektura. Zhruba tisícovka uzlů sloužila ke sběru dat a jejich předávání na cílový server, kde probíhalo ukládání. Aby nebyly tyto uzly přetěžovány velkými toky, pravidelně se obměňovaly. Celkem bylo pro vyhledávání nodů a přeposílání naměřených dat využito devět tisíc nejvýkonnějších uzlů s největším množstvím paměti. Takovýto typ infrastruktury má tedy smysl jen v případě, že máte více než devět tisíc klientů, píše Joe ve zprávě.

Setkání s konkurenčním botnetem

Poté nastalo samotné testování software a celého principu. Bylo k tomu využito několik tisíc náhodně vybraných uzlů. Joe zjistil, že jeden z nich už má v /tmp  nainstalovanou podezřelou binárku. Její analýzou přišel na to, že jde skutečně o útočný software, který patří do nově budovaného botnetu Aidra.

Rozhodl se proto upravit svou aplikaci tak, aby blokovala přístup na telnet a zabránila aplikaci Aidra v instalaci. Usoudil jsem, že to způsobí menší škody, než kdyby Aidra tato zařízení infikovala, píše Joe. Upozorňuje ale na to, že neprováděl žádné trvalé změny, takže po restartu je zařízení opět přístupné všem.

Během jednoho dne byl skenovací botnet rozšířen do sta tisíc uzlů, což stačilo k zahájení jeho hlavní skenovací činnosti. Také už bylo možné prohledat celý internet za dvacet čtyři hodin a najít ztracené uzly botnetu. Postupně se pak podařilo rozšířit software až na 420 000 uzlů.

Skenovací metody

Celkem bylo použito pět skenovacích metod, každá k jinému účelu. Základní metodou byl ICMP Ping, který byl rozesílán modifikovanou verzí utility fping. Jednak probíhaly rychlé skeny, které dokázaly projet celý IP prostor během jednoho dne a pak také pomalé skenování trvající šest týdnů. Celkem bylo odesláno 52 miliard pingů.

Zjišťovány byly také reverzní DNS záznamy pro každou IP adresu. Protože by DNS servery poskytovatelů nemusely ustát takovou zátěž, bylo využito šestnáct největších DNS serverů společností Google, Level3, Verizon a dalších. Celý proces byl několikrát během roku zopakován a celkem vedl k 10,5 miliardám záznamů.

Důležitý byl Nmap sken, který probíhal na stovce nejpoužívanějších portů a některých náhodných portech. Takto bylo otestováno asi 660 milionů počítačů a celkem bylo otestováno 71 miliard portů. Nmap také sám ověřoval, zda skenovaný stroj odpovídá, díky čemuž nasbíral dalších 19,5 miliard záznamů.

Nmap umí také provádět skenování služeb a z jejich odpovědí vypsat například verzi protokolu, verzi serverové aplikace či použitý operační systém. Takto bylo prověřeno celkem 632 TCP a 110 UDP portů každé IP adresy a výsledkem bylo 4000 miliard dotazů, z nichž 175 miliard skončilo úspěchem.

Posledním testem byl traceroute, který byl prováděn jen jako ukázka zajímavého konceptu. K jeho spouštění byla použita nejhloupější zařízení a test běžel jen několik dní. Celkem z něj bylo získáno 68 milionů záznamů.

Výsledky analýzy

Výstupem z analýzy je spousta grafů a čísel, ale to podstatné je možné shrnout do několika základních údajů:

  • 420 milionů IP adres odpovídá na ping více než jednou
  • 165 milionů IP adres má otevřený alespoň jeden ze 150 nejběžnějších portů
  • 141 milionů IP adres neodpovídá na ping a porty jsou zavřené – pravděpodobně za to může firewall
  • 1051 milionů IP adres má reverzní DNS záznam, 729 milionů z těchto adres ale nijak nereaguje
  • 30 000 sítí o velikosti /16 má aktivní alespoň jednu adresu
  • 14 000 sítí o velikosti /16 má aktivních 90 % adres
  • 4,3 milionů sítí o velikosti /24 má plně využitý rozsah

Základním výstupem je graf, který zobrazuje využití celého adresního prostoru. Každý pixel reprezentuje jednu /24 síť, která může obsahovat až 254 počítačů. Barva pak určuje, kolik z těchto IP adres odpovídá. Černá znamená, že vůbec žádná, červená naopak značí plné využití tohoto adresního rozsahu. Vše si také můžete prohlédnout na interaktivní a zoomovací mapě.

Jak jsou využívány jednotlivé části IP rozsahu

Dále byla vytvořena mapa živých strojů připojených k internetu. Využití databázi GeoLite a využívá data z ICMP pingu či skenu otevřených portů. Celkem je v ní zaneseno 460 milionů IP adres.

Tak tohle je pravá mapa internetu

Také byly vytvořeny animované obrázky znázorňující změnu využití adresního prostoru v různých fázích dne. V Evropě a Severní Americe k velkým změnám nedochází, protože řada spojení je aktivních stále. Animované GIFy si můžete stáhnout ze serveru se zprávou.

Zajímavý je také seznam TLD, ve kterých končí reverzní záznamy. Nejvíce jich končí v .net a .com, z národních domén je nejčastější .jp. Česká doména .cz je na poměrně slušném 32. místě a pokud se podíváme jen na národní domény, pak jsme na 26. místě.

Z hlediska domén druhého řádu končí v Česku reverzní záznamy podle očekávání nejčastěji na iol.cz, upcbroadband.cz, eurotel.cz, tmcz.cz, poda.cz, vodafone.cz, o2isp.cz, unet.cz, rionet.cz a bluetone.cz. Sledovány byly také domény třetího řádu, ale ty už končí v některé z výše uvedených domén druhého řádu.

Skenování služeb přineslo také velmi zajímavé výsledky. Z webových serverů zvítězil Apache s 20 % nasazení, těsně za ním je embedded web server Allegro RomPager s 18,5 %, následuje neidentifikovaných 12 % web serverů, Microsoft IIS získal 8,5 %, Nginx a AkamaiGHost shodně po 5,7 %.

Ze SMTP serverů je nejčastěji nasazován Exim server se 17,7 %, Postfix nalezneme na 15 % serverů, Microsoft ESMTP je na necelých 7 % a Sendmail používá 5,3 % serverů. Například u SSH je podle očekávání nejrozšířenější OpenSSH se 45 %, následuje Dropbear s 32 %, Cisco SSH s 5 % a MikroTik RouterOS sshd s 2,2 %.

Na portu 9100 bylo objeveno poměrně hodně tiskáren HP LaserJet a Cisco routerů a podobně. Podrobnosti naleznete na webu průzkumu, kde si můžete procházet informace zjištěné o jednotlivých portech. Můžete zkoumat, pokud objevíte zajímavou informaci, podělte se v diskusi.

Jak velký je internet?

Tuto otázku si klade Joe na konci své analýzy. Odpovídá, že záleží na tom, jak to počítáte. Celkem 420 milionů adres reaguje na ping, 36 milionů má otevřeno více než jeden port. To dělá 450 milionů adres, které jsou používány a jsou dostupné z internetu.

bitcoin_skoleni

Dalších 141 milionů adres bylo za firewallem, takže se mohou počítat mezi používané. Dohromady to tedy dává 591 milionů používaných IP adres. Dalších 729 milionů adres má reverzní DNS záznam, ale nepoužívají se. To tedy celkem dělá 1,3 miliard „nějak použitých“ IP adres. Zbylých 2,3 miliard se nepoužívá vůbec.

Pokud máte zájem nějak dále zkoumat surová data, můžete si je stáhnout přes BitTorrent. V komprimované podobě mají 568 GB, po rozbalení získáte 9 TB dat pro další průzkum. Pokud se něco dozvíte, nezapomeňte se podělit v diskusi.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.